package org.example.leetcode;

/**
 * @author: lynn
 * @Descript:
 * @date: 2021/8/3 13:36
 * @version: 1.0
 */
public class LC36 {
    public static void main(String[] args) {

    }

    public boolean isValidSudoku(char[][] board) {
       boolean[][] rows=new boolean[9][9];
       boolean[][] cols=new boolean[9][9];
       boolean[][] box=new boolean[9][9];
        for (int row = 0; row <9 ; row++) {
            for (int col = 0; col <9 ; col++) {
                char cur=board[row][col];
                if ((cur=='.')) continue; // 数独部分空格内已填入了数字，空白格用 '.' 表示
                int curIndex=cur-'1'; // 1-9,-1, 0-8
                // 3x3 宫内只能出现一次,boxIndex是帮我们判断，在9个3*3的宫格中的具体某个
                // 0 1 2
                // 3 4 5
                // 6 7 8
                if (rows[row][curIndex] || cols[col][curIndex] ||
                        box[3*(row/3)+curIndex/3][3*(col/3)+curIndex%3]
                )
                    return false;
                rows[row][curIndex]=true;
                cols[col][curIndex]=true;
                box[3*(row/3)+curIndex/3][3*(col/3)+curIndex%3]=true;
            }
        }
        return true;//全部遍历完了
    }
}
